The present disclosure relates in general to link level flow control mechanisms to prevent the loss of packets of data due to buffer overflow by the receiver node of a link. In particular, methods of determining at a transmitter node the availability of a public buffer that is shared by multiple virtual lanes using negative credits are described.
Packets of data that are transmitted from a transmitter node at one end of a link to a receiver node at the other end of the link often need to be stored in a buffer at the receiver to facilitate transmission of the packets and avoid loss of data. Each transmitter node may be associated with a number of virtual lanes over which packets may be sent, and each virtual lane may have a dedicated buffer. The buffers, however, have a defined amount of space available for storing data units that are transmitted in the packets, and once the capacity of a particular buffer has been met, transmission of additional packets via the virtual lane associated with that buffer may be paused until data is released and the buffer again becomes available.
As the demands for data transmission increase, however, it becomes increasingly important to transmit data in a more continuous and more efficient manner, while avoiding errors in transmission and/or loss of data.